/***************************************************
> Copyright (C) 2024 ==KINGYI== All rights reserved.
> File Name: 2.c
> Author:cjy
> Mail: 
> Created Time: 2024年08月06日 星期二 17时27分55秒
***************************************************/
// 进程中安装SIGINT,SIGUSR1,SIGALRM三种信号并测试。
#include <stdio.h>
#include <signal.h>
#include <unistd.h> // 包含 sleep 和 getpid 函数的头文件

// 定义一个信号处理函数
void fun(int sig) {
	if(sig == SIGINT)
	{
    		printf("hello world\n"); // 当信号被触发时，打印 "hello world"
	}
	else if(sig == SIGUSR1)
	{
		printf("cjy\n");
	}
	else if(sig == SIGALRM)
	{
		alarm(5);
		printf("sigalrm\n");
	}
}

int main() {
    // 注册 SIGINT 信号的处理函数
    signal(SIGINT, fun);
    signal(SIGUSR1,fun);
    signal(SIGALRM,fun);
    // 打印当前进程的 PID
    printf("%d\n", getpid());
    raise(SIGUSR1);
    alarm(5);
    while (1) {
        // 模拟延时
        sleep(1);
        // 主动触发 SIGINT 信号
	raise(SIGUSR1);
        raise(SIGINT);
	
    }
    return 0; // 程序不会到达这里，因为有无限循环
}

